#include <mips/regdef.h>
#ifndef fp
#define fp	$fp
#endif
#define SSIZE	32
#define	O_RA	28
#define O_FP	24
#define O_GP	20
#define O_ARG0	SSIZE
#define	O_ARG1	(SSIZE + 4)
	.text
	.align 2
	.global	mystrcpy
	.ent	mystrcpy
#	Argumento
#	a0:	puntero a variable que contiene la cadena fuente
#	a1: puntero a variable que contiene la cadena destino
mystrcpy:
	.frame	fp,SSIZE,ra
	.set noreorder
	.cpload t9
	.set reorder
	subu	sp,sp,SSIZE
	sw		ra,O_RA(sp)
	sw		fp,O_FP(sp)
	sw		gp,O_GP(sp)
	move	fp,sp
	sw		a0,O_ARG0(fp)
	sw		a1,O_ARG1(fp)
	lw		a0,O_ARG0(fp)
	lw		a1,O_ARG1(fp)
#cuerpo programa
#t0: indice cadena
#t1: auxiliar lectura
#t3: auxiliar suma posición lectura
	addu	t0,zero,zero
L0:	addu	t3,a0,t0
	lb		t1,0(t3)
	addu	t3,a1,t0
	bgt		t1,zero,L1
	b		finalizarString
L1: sb		t1,0(t3)
	addiu	t0,t0,1
	b		L0
finalizarString:
	sb		zero,0(t3)
fin_mystrcpy:
	move	fp,sp
	lw	ra,O_RA(fp)
	lw	fp,O_FP(fp)
	lw	gp,O_GP(fp)
	addiu	sp,sp,SSIZE
	j	ra
	.end mystrcpy
